#ifndef ___fat32_recursos_y_bloqueos_funciones_auxiliares_4

#define ___fat32_recursos_y_bloqueos_funciones_auxiliares_4 1

#include "f32_base.c"
#include "f32_bloq.c"
#include "f32_rec.c"

int fat32_buscar_apertura_elemento(unsigned long long);
void fat32_generar_nuevo_bloqueo_apertura(unsigned int, fat32_datos_apertura);
void fat32_crear_apertura_elemento (fat32_datos_apertura);

int fat32_buscar_apertura_elemento (unsigned long long descriptor) {
  unsigned int posicion;
  for (posicion = 0; posicion < fat32_recursos.cantAperturas; posicion ++)
    if (fat32_recursos.aperturas[posicion].descriptor == descriptor)
      return posicion;
  return -1;
}

void fat32_generar_nuevo_bloqueo_apertura (unsigned int transaccion, fat32_datos_apertura datos) {
  unsigned int posicion;
  for (posicion = 0; posicion < fat32_cantidad_bloqueos; posicion ++)
    if (!fat32_bloqueos[posicion].tipoEvento) break;
  if (posicion == fat32_cantidad_bloqueos) {
    fat32_cantidad_bloqueos ++;
    fat32_bloqueos = fb_cambiar_tamano(fat32_bloqueos, sizeof(fat32_bloqueo), fat32_cantidad_bloqueos);
  }
  fat32_bloqueo nuevoBloqueo;
  nuevoBloqueo.tipo = 5;
  nuevoBloqueo.transaccionBloqueada = transaccion;
  nuevoBloqueo.datosEvento.apertura = datos;
  fat32_bloqueos[posicion] = nuevoBloqueo;
}

void fat32_crear_apertura_elemento (fat32_datos_apertura datos) {
  fat32_recursos.cantAperturas ++;
  fat32_recursos.aperturas = fb_cambiar_tamano(fat32_recursos.aperturas, sizeof(fat32_datos_apertura), fat32_recursos.cantAperturas);
  fat32_recursos.aperturas[fat32_recursos.cantAperturas - 1] = datos;
}

#endif